{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "d:\\Anaconda install\\envs\\pytorch\\lib\\site-packages\\tqdm\\auto.py:22: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n",
      "  from .autonotebook import tqdm as notebook_tqdm\n"
     ]
    }
   ],
   "source": [
    "import torch\n",
    "from torchvision import datasets\n",
    "from matplotlib import pyplot as plt\n",
    "import torch.nn as nn\n",
    "from torchvision import transforms\n",
    "import torch.optim as optim"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Files already downloaded and verified\n",
      "Files already downloaded and verified\n"
     ]
    }
   ],
   "source": [
    "data_path=r'Data'\n",
    "cifar100=datasets.CIFAR100(data_path,train=True,download=True)\n",
    "cifar100_val=datasets.CIFAR100(data_path,train=False,download=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<PIL.Image.Image image mode=RGB size=32x32>"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cifar100[0] #每一个：（图片，标签）\n",
    "cifar100[0][0]#第一个元素是图片\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "19"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cifar100[0][1] #第二个元素为标签"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['apple',\n",
       " 'aquarium_fish',\n",
       " 'baby',\n",
       " 'bear',\n",
       " 'beaver',\n",
       " 'bed',\n",
       " 'bee',\n",
       " 'beetle',\n",
       " 'bicycle',\n",
       " 'bottle',\n",
       " 'bowl',\n",
       " 'boy',\n",
       " 'bridge',\n",
       " 'bus',\n",
       " 'butterfly',\n",
       " 'camel',\n",
       " 'can',\n",
       " 'castle',\n",
       " 'caterpillar',\n",
       " 'cattle',\n",
       " 'chair',\n",
       " 'chimpanzee',\n",
       " 'clock',\n",
       " 'cloud',\n",
       " 'cockroach',\n",
       " 'couch',\n",
       " 'crab',\n",
       " 'crocodile',\n",
       " 'cup',\n",
       " 'dinosaur',\n",
       " 'dolphin',\n",
       " 'elephant',\n",
       " 'flatfish',\n",
       " 'forest',\n",
       " 'fox',\n",
       " 'girl',\n",
       " 'hamster',\n",
       " 'house',\n",
       " 'kangaroo',\n",
       " 'keyboard',\n",
       " 'lamp',\n",
       " 'lawn_mower',\n",
       " 'leopard',\n",
       " 'lion',\n",
       " 'lizard',\n",
       " 'lobster',\n",
       " 'man',\n",
       " 'maple_tree',\n",
       " 'motorcycle',\n",
       " 'mountain',\n",
       " 'mouse',\n",
       " 'mushroom',\n",
       " 'oak_tree',\n",
       " 'orange',\n",
       " 'orchid',\n",
       " 'otter',\n",
       " 'palm_tree',\n",
       " 'pear',\n",
       " 'pickup_truck',\n",
       " 'pine_tree',\n",
       " 'plain',\n",
       " 'plate',\n",
       " 'poppy',\n",
       " 'porcupine',\n",
       " 'possum',\n",
       " 'rabbit',\n",
       " 'raccoon',\n",
       " 'ray',\n",
       " 'road',\n",
       " 'rocket',\n",
       " 'rose',\n",
       " 'sea',\n",
       " 'seal',\n",
       " 'shark',\n",
       " 'shrew',\n",
       " 'skunk',\n",
       " 'skyscraper',\n",
       " 'snail',\n",
       " 'snake',\n",
       " 'spider',\n",
       " 'squirrel',\n",
       " 'streetcar',\n",
       " 'sunflower',\n",
       " 'sweet_pepper',\n",
       " 'table',\n",
       " 'tank',\n",
       " 'telephone',\n",
       " 'television',\n",
       " 'tiger',\n",
       " 'tractor',\n",
       " 'train',\n",
       " 'trout',\n",
       " 'tulip',\n",
       " 'turtle',\n",
       " 'wardrobe',\n",
       " 'whale',\n",
       " 'willow_tree',\n",
       " 'wolf',\n",
       " 'woman',\n",
       " 'worm']"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cifar100.classes #所有标签"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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bds2Y4wx27ZtM5LMa6+95nJ3XNNcfo5zJASgS3zwwQdqbW1VXl5e5LoBAwZo5MiRF/28Pz+q6Nu3r1JSUlRTUyNJOnDggPLy8joNWb399tvV2Niojz76SGPHjtXdd9+tMWPG6MEHH9QLL7ygurq6SG1NTY3mzJmjESNGKBQKKRQKqbGxUUePHnXevvHjxzt/Di7NKYRWr16tm2++WampqUpNTVVeXp7eeOONyO3GGC1ZskRZWVlKSkpSfn6+9u/f3+WLBtD9mMscyJ+QkNDp40AgoI6OjkjPz0/5Pvt1AoGA4uPjVVxcrDfeeEOjRo3SP//zP2vkyJGqqKiQJM2ePVu7du3SypUrVVZWpj179mjgwIFqbW2VJMXFxZ2z9jNnzpx3nZzVFx1OITRkyBAtW7ZMO3fu1M6dOzVlyhTdd999kaB57rnntGLFCq1atUo7duxQRkaGpk6delm/fwXQswwbNkwJCQkqLy+PXFdXV6f33nvvsnuOGjVKZWVlnUKirKxMKSkpuu666yR9Fka33367nn32We3evVuJiYnasGGDJOmtt97Sd77zHU2bNk033XSTgsGgTpw4Eel19my9qqqqyHV/fpICos/pHMPp06d3+vgf//EftXr1apWXl2vUqFFauXKlFi9erBkzZkiS1q5dq/T0dK1bt06PPfZY160aQLeTnJysb33rW3riiSc0cOBApaena/HixZGjjcvx+OOPa+XKlZo/f77mzZungwcP6plnntHChQsVFxend955R7/97W9VUFCgtLQ0vfPOOzp+/LhuvPFGSZ8F489+9jONHz9e4XBYTzzxhJKSkiL9k5KSNHHiRC1btkxDhw7ViRMn9PTTT1/xfQF7l/3oaG9v1/r169XU1KS8vDxVVFSourpaBQUFkZpgMKjJkyerrKzsgn1aWloUDoc7XQD0TD/84Q9155136itf+Yruuece3XHHHRo3btxl97vuuuu0adMm/eEPf9DYsWM1Z84cfetb34oERWpqqrZv365p06ZpxIgRevrpp7V8+XIVFhZKkn7605+qrq5OX/rSl/TII4/oO9/5jtLS0jp9jZ/+9Kc6c+aMxo8fr+9+97uRM+9wdTi/s+q+ffuUl5en06dPKzk5WevWrdO0adNUVlam22+/XceOHVNWVlak/m//9m915MgRbd68+bz9lixZomefffac63ln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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "name=cifar100.classes[cifar100[1][1]]\n",
    "fig = plt.figure()\n",
    "\n",
    "plt.imshow(cifar100[1][0])\n",
    "\n",
    "plt.text(20,30,name)\n",
    "plt.show()"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1. PIL TO tensor 将图片转化成tensor数据，用于后续传入模型计算\n",
    "\n",
    "- 同时会将0~255归一化0~1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "to_tensor = transforms.ToTensor() #将transforms中ToTensor()方法 命名为to_tensor()可以作为一个函数\n",
    "img_PIL=cifar100[99][0] #将第99张图片拿出来实验\n",
    "img_t=to_tensor(img_PIL) \n",
    "img_t #将图像转化成了tensor数据\n",
    "img_Label=cifar100.classes[cifar100[99][1]]\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "torch.Size([3, 32, 32])"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "img_t.shape # c*h*w "
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2. 对cifar100整个数据集直接转化成tensor数据类型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "tensor_cifar100=datasets.CIFAR100(data_path,train=True,download=False,transform=transforms.ToTensor())"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 直接导入的PIL顺序是c*h*w\n",
    "- plt绘图顺序是h*w*c\n",
    "- permute()改变轴序"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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xyU696i41C8b6t0i/3y3bMUc0zpmnf9F79rainJT74zy3rWHj6RMvaW4d2VRhf/tJ0nFcVs2Wd6Q7ecG/LOsJCkR+f8/qqzCkKcnKf+Bf23O+efMSVKuzHZfSRtu8nJny6UrRP77p8/55Tke42L+eYoD8SpT70RNrXdtf3e3qXeh+5CpvrHafy1Him1ZjcW1jd61sWr/rD5JGjY83kpb3/WuLQwOqO/5/8erliMhAEAwpiG0fv16XXzxxaqurlZ1dbUWLVqkn/zkJyM/d85p1apVampqUllZmZYsWaJdu3aN+aIBAFODaQjNmjVL999/v7Zv367t27fr2muv1Y033jgyaB544AGtXbtW69at07Zt29TQ0KDrrrtOfX1947J4AMDkZhpCN9xwg77yla9o3rx5mjdvnv72b/9WlZWV2rp1q5xzeuihh3Tfffdp6dKlmj9/vh577DENDAzoySefHK/1AwAmsVN+Tyifz+upp55SOp3WokWL1NHRoa6uLrW1tY3UJBIJXX311dqyZcun9slkMkqlUqMuAICzg3kI7dy5U5WVlUokErr99tv17LPP6gtf+IK6urokSfX19aPq6+vrR352ImvWrFEymRy5NDf7f4sgAGByMw+hCy64QDt27NDWrVv1ne98R8uWLdNbb7018vMoGn0Kp3PuuOs+buXKlert7R25dHZ2WpcEAJikzJ8TKikp0fnnny9JWrBggbZt26Yf/OAH+qu/+itJUldXlxobf39ee3d393FHRx+XSCSUSNg+vwEAmBpO+3NCzjllMhm1traqoaFBGzZsGPnZ8PCwNm3apMWLF5/urwEATEGmI6F7771X7e3tam5uVl9fn5566ilt3LhRL730kqIo0vLly7V69WrNnTtXc+fO1erVq1VeXq5bbrllvNYPAJjETEPogw8+0De/+U0dPHhQyWRSF198sV566SVdd911kqR77rlHg4ODuuOOO3T48GEtXLhQr7zyiqqqbHEcktQ3OKAiz/iRQm2dd9/kdP9aSYqX+0UHSVK384/hkaRs3j8CpajSFq0Ti/vH9hQMET+SVCj4x7xIUizyj7SpKJ9u6m1JEIoXl5h6Hz6U9q4dHrDt++EK//uVJLkS/4dqUWSLVSqqKPWvLdh6Dw763y7xItvL8q7S/3llRpEtVinb/6GpPp067F07kM+Yek+r8o8ay0xv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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.imshow(img_t.permute(1,2,0)) #plt画图顺序是h*w*c\n",
    "plt.text(25,3,img_Label)\n",
    "plt.show()"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 3.数据标准化"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "torch.Size([3, 32, 32, 50000])"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "imgs = torch.stack([img_t for img_t,_ in tensor_cifar100],dim=3)\n",
    "imgs.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "torch.Size([3, 51200000])"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "imgs.view(3,-1).shape #仅保留三个通道，并将剩余所有纬度合并为一个纬度\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tensor([0.5071, 0.4865, 0.4409])"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "imgs.view(3,-1).mean(dim=1) #RGB 通道的平均值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tensor([0.2673, 0.2564, 0.2762])"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "imgs.view(3,-1).std(dim=1) #RGB三个通道的 标准差\n"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 将Totensor和归一化，标准化连接"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [],
   "source": [
    "transformed_cifar100=datasets.CIFAR100(data_path,train=True,download=False,transform=transforms.Compose(\n",
    "    [\n",
    "        transforms.ToTensor(),\n",
    "        transforms.Normalize((0.5071, 0.4865, 0.4409),\n",
    "                             (0.2673, 0.2564, 0.2762))\n",
    "    ]))"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 标准化后的图片已经进行的较大的变化，不能简单的用人的视角进行理解"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers).\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<matplotlib.image.AxesImage at 0x1f0836248b0>"
      ]
     },
     "execution_count": 60,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "img_transformed_t,_=transformed_cifar100[99]\n",
    "plt.imshow(img_transformed_t.permute(1,2,0)) "
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "pytorch",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.13"
  },
  "orig_nbformat": 4,
  "vscode": {
   "interpreter": {
    "hash": "e8f28fbeb112014ba6c333544755f206e5d677c1e329d1a6cce6c1b79d7517a3"
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
